package 华为.text43_迷宫问题_2;
/**
 * 此方法只是找了一条路线, 可以找多条路线~
 */

import java.util.ArrayList;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();// n行
        int m = scanner.nextInt();// m列
        scanner.nextLine();// 读取缓冲区的换行符
        int[][] ints = new int[n][m];
        // 给二维矩阵赋值, 初始化
        for (int i = 0; i < n; i++) {
            String s = scanner.nextLine();
            String[] split = s.split(" ");
            for (int j = 0; j < m; j++) {
                ints[i][j]=Integer.valueOf(split[j]);
            }
        }

        ArrayList<pos> path = new ArrayList<>(); // 用来装这个访问过程中的点
        ArrayList<pos> resultList = new ArrayList<>();// 用来装这个结果集的
        // 第一个入口点进行访问,并进行标记访问过
        ints[0][0]=1;
        path.add(new pos(0,0));
        dfs(path,resultList,0,0,n,m,ints);

        for (pos pos : resultList) {
            System.out.println(pos);
        }

    }

    // 递归 + 回溯
    private static void dfs(ArrayList<pos> path, ArrayList<pos> resultList, int i, int j, int n, int m,int[][] ints) {
        // 出口条件
        if (i==n-1&&j==m-1){
            // 也就是集合中已经加入了这个最后一个出口结点,则说明找到了出口
            // 收集结果
            for (pos pos : path) {
                resultList.add(pos);
            }

            return;
        }

        // 递归
        if (i+1<n&&ints[i+1][j]==0){// 向下
            // 处理本次遍历
            path.add(new pos(i+1,j));
            ints[i+1][j]=1;
            // 递归
            dfs(path,resultList,i+1,j,n,m,ints);
            // 回溯
            path.remove(path.size()-1);

            if (resultList.size()!=0) // 没有啥用, 还是会退回去 ~
                return;

        }
        if (i-1>=0&&ints[i-1][j]==0){// 向上
            // 处理本次遍历
            path.add(new pos(i-1,j));
            ints[i-1][j]=1;
            // 递归
            dfs(path,resultList,i-1,j,n,m,ints);
            // 回溯
            path.remove(path.size()-1);

            if (resultList.size()!=0)
                return;
        }
        if (j+1<m&&ints[i][j+1]==0){// 向右
            // 处理本次遍历
            path.add(new pos(i,j+1));
            ints[i][j+1]=1;
            // 递归
            dfs(path,resultList,i,j+1,n,m,ints);
            // 回溯
            path.remove(path.size()-1);

            if (resultList.size()!=0)
                return;

        }
        if (j-1>=0&&ints[i][j-1]==0){// 向左
            // 处理本次遍历
            path.add(new pos(i,j-1));
            ints[i][j-1]=1;
            // 递归
            dfs(path,resultList,i,j-1,n,m,ints);
            // 回溯
            path.remove(path.size()-1);

            if (resultList.size()!=0)
                return;
        }
    }


}

// 创建这个坐标类
class pos{
    int x;
    int y;
    public  pos(int x,int y){
        this.x=x;
        this.y=y;
    }

    @Override
    public String toString() {
        return "("+x+","+y+")";
    }
}